Skip to content

feat(issue5): KV Cache 临界带宽建模与 TCP/RDMA 对照流水线 - #36

Open
yanchaomei wants to merge 11 commits into
Tencent:mainfrom
yanchaomei:feat/issue5-kv-cache-rdma
Open

feat(issue5): KV Cache 临界带宽建模与 TCP/RDMA 对照流水线#36
yanchaomei wants to merge 11 commits into
Tencent:mainfrom
yanchaomei:feat/issue5-kv-cache-rdma

Conversation

@yanchaomei

@yanchaomei yanchaomei commented Jul 31, 2026

Copy link
Copy Markdown

任务说明

本 PR 按仓库 src/test/issue5/README.md 的验收描述,实现 Prefill KV Cache
以存代算临界带宽模型,以及 Mooncake Store + vLLM 的 TCP/RDMA 可复现实验
与证据流水线。

Relates to #5,并关联领取/进展评论:

编号边界:GitHub Issue #5 当前正文标题是“内存事务拼包效率探究”,但仓库
src/test/issue5/README.md 描述的是 KV Cache/RDMA,两处存在错位。因此本 PR
不使用 Closes #5,避免误关闭内容不一致的 Issue;请维护者确认最终关联编号。

主要实现

  • 串行与重叠临界带宽模型,覆盖 no_hitno_payloadnever_profitable
    等边界,严格使用 B > Bcrit 判定收益。
  • 按模型 GQA 结构计算 KV Cache 字节,提供 Prefill FLOPs、实测曲线拟合、bootstrap
    统计与资源成本归一化。
  • 确定性 token 工作负载、块对齐命中率、单次使用/可验证驱逐环;失败、超时、
    OOM 均保留在分母。
  • vLLM 流式请求执行器、开放环到达计划与 TTFT/并发/QPM/错误率记录。
  • Mooncake standalone-store TCP/RDMA 对照配置与双机 Gate,只允许 transport
    字段变化。
  • 安全编排:每个服务使用独立 session,停止时同时校验 PID 工作目录与
    session,不使用 pkill/killall;启动前检查同名 PID slot。
  • RDMA GPU 注册 fail-closed:必须显式选择
    ISSUE5_RDMA_GPU_REGISTRATION=dmabuf|peermem;按所选物理 GPU 校验 CUDA
    attributes 116/124 与 peer-memory 模块,再映射到 Mooncake
    WITH_NVIDIA_PEERMEM=0|1
  • 每个 role/protocol 启动前保存脱敏环境快照,审计最终 GPU 集合、注册策略及
    派生开关,不记录 token/secret。
  • verify-remote-hit:按 request ID 连接 recompute/Reader,逐项核对输出摘要、
    Store GET bytes/failed keys 与 external hit tokens;仅 HTTP 成功不能通过。
  • 完整 raw、脱敏环境、Prometheus、运行日志、失败证据与 SHA-256 manifest。

双机验证结果

环境:两台 A40 节点,mlx5_0 RoCE v2,vLLM 0.23.0,Mooncake Transfer Engine
0.3.12.post1。

Gate 结果 证据边界
裸 RDMA write 64 KiB、8 QP 平均 185.11 Gbit/s 只证明网卡链路
TCP 应用探针 8 连接 28.8071 Gbit/s 带序号与 SHA-256 校验
TCP Mooncake 2048-token smoke 3/3 Reader 成功;189/189 GET keys;9,289,728/9,289,728 bytes;3024/3024 hit tokens;3/3 输出摘要一致 MEASURED_COMPATIBILITY,不是正式性能结论
历史 RDMA legacy path 未加载 peer-memory 时,GPU MR 报 Bad address [14] / AddressNotRegistered,189/189 PUT keys 失败 根因证据,不再代表加载模块后的当前状态
强制 DMA-BUF 对照 旧错误消失,但 requester CUDA attribute 124=0,Transfer Engine 主动拒绝 根因对照,不是 E2E 成功
peermem GPUDirect RDMA smoke Writer 63/63 PUT、Reader 63/63 GET;3,096,576/3,096,576 bytes;1008/1008 hit tokens;Reader 与 fresh recompute 输出摘要 1/1 一致 GPUDIRECT_RDMA_COMPATIBILITY,单请求功能证据
Qwen 7B 8K/32K/128K 与 open-loop 未运行 保持 UNKNOWN

peermem RDMA 闭环判据

在用户明确授权后,node1 加载了与 kernel/driver 匹配的
nvidia_peermem 580.95.05,并仅使用空闲 GPU 0;GPU 2 上其他用户的进程
未被触碰。

  • Writer/Reader 环境快照显式记录
    ISSUE5_RDMA_GPU_REGISTRATION=peermemWITH_NVIDIA_PEERMEM=1
  • 两个进程均在 mlx5_0、GID index 3 上启动 RDMA,成功注册 8 GiB
    CUDA-backed KV arena 与 vLLM KV-cache segments;实验时
    nvidia_peermem use count=6。
  • Mooncake endpoint memcpy 禁用,Store pinned host staging 禁用;Reader 没有到
    data-plane owner 50052 的 TCP 连接。
  • Writer RDMA 发送增量为 3,278,016 bytes,Reader RDMA 接收增量为
    3,274,992 bytes,分别比 3,096,576-byte KV payload 高 5.86% / 5.76%。
  • 机器判定 proven=true:Reader 1/1 成功、输出摘要 1/1 与 fresh recompute
    一致、GET 失败键为 0、字节与 external hit tokens 均达到理论值。

Writer/Reader/recompute 的单次 TTFT 为 59.863 / 112.552 / 70.106 ms。样本量
仅 1,不报告 p50/p95、QPM、SLO 或 RDMA-over-TCP 加速比,也不外推到
Qwen 7B 或长上下文。

证据入口

验证

  • make check:46 tests passed
  • Ruff lint/format:通过
  • 全部 Shell 编排脚本语法检查:通过
  • git diff --check:通过
  • remote-20260731remote-20260801remote-20260801-peermem-smoke
    三批 SHA-256 manifest:全部通过
  • peermem 远端命中判定从 raw 重算:proven=true

最新提交:

  • 7a45d28:显式注册策略、能力预检、脱敏启动证据与根因修正
  • 161ed4d:双来源(实验 baseline / validator commit)SHA-256 manifest
  • c5982c1:授权后 peermem GPUDirect RDMA 闭环证据、计数器与清场状态

当前边界与后续 Gate

  • Pythia 14M 单请求 peermem GPUDirect RDMA 兼容性 Gate 已通过;
    锁定 Qwen 7B 的 8K/32K/128K 与 open-loop 正式矩阵仍为 UNKNOWN
  • 正式矩阵必须逐 cell 保存 RDMA/TCP 计数器、失败分母、延迟分布、
    SLO 合规 QPM 与成本;本次单请求证据不作为性能结论。
  • 全部项目进程已清理,Requester 8010/8020 与 Store
    50051/50052/8080/9003 均释放,GPU 0/1 为 0 MiB。
  • nvidia_peermem 已按授权加载并在收尾时 use count=0;未擅自卸载共享主机
    模块。是否持久化或卸载,由主机管理员单独决定。

提供串行与重叠临界带宽、Prefill FLOPs/拟合、KV 字节、资源成本、统计置信区间、远端命中/RDMA 证据、不可变 Manifest 及确定性工作负载。
实现开放环负载统计、vLLM 单元执行器、远端命中与数据路径证据判定。补齐 Mooncake 双传输配置、安全 PID 编排、分阶段 Gate、结果模板和可复现验证入口。
根据远端 GPU 空闲度允许安全反转 Store 与 requester 节点。运行时从 TCP/RDMA 对照模板解析 Store、requester 与 GPU 绑定,保留解析配置作为证据,并补充配置校验和回归测试。
使用带序号与 SHA-256 的帧协议测量多连接聚合带宽和应用层 RTT,服务端回传已验证字节数,避免把未校验发送量当作有效吞吐。
按目标环境 CLI 将 Store Owner 的 host 与 port 分离传递,并增加运行目录 Manifest 生成、拓扑与 GPU 环境白名单及回归测试。
新增请求摘要与 Mooncake Prometheus 交叉验证,避免把 HTTP 成功误判为远端 KV 命中。适配 vLLM 0.23 参数和可覆盖模型配置,并用独立 session 安全回收完整进程树。补充 GPU 内存注册预检信息、provenance 白名单与回归测试。
归档两台 A40 节点的 preflight、RDMA/TCP 链路输出、请求记录、Mooncake 日志、Prometheus 快照和 SHA-256 manifest。报告明确记录 TCP 兼容性闭环通过、RDMA GPU 内存注册失败,并保留 Qwen 7B 正式矩阵为 UNKNOWN。
@yanchaomei

Copy link
Copy Markdown
Author

双机远端 Gate 与证据归档已补齐(提交 73e5da1df04a8f):

  • 裸 RDMA:64 KiB / 8 QP 平均 185.11 Gbit/s;TCP 校验探针 8 连接 28.8071 Gbit/s。
  • TCP Mooncake Store 兼容性闭环:Reader 3/3 成功,189/189 GET keys、9,289,728/9,289,728 bytes、3024/3024 external hit tokens,输出摘要与 recompute 3/3 一致;机器判定 proven=true
  • RDMA Mooncake GPU 数据路径未通过:GPU memory registration 报 Bad address [14] / AddressNotRegistered,189/189 PUT keys 失败,严格标记 UNPROVEN_RDMA,不宣传 GPUDirect。
  • 锁定 Qwen 7B 的 8K/32K/128K 与 open-loop 正式矩阵未运行,保留 UNKNOWN;14M smoke 只证明兼容性,不作为性能结论。
  • make check:32 passed,lint/format、Shell 语法、diff check 全通过;80 个证据文件的 SHA-256 manifest 校验通过。

详见 RESULTS.mdraw evidence bundle

Mooncake 0.3.12 的实际默认注册路径依赖 peer-memory,原有编排未显式选择,导致不兼容主机直到运行期才批量失败。

技术方案:
- 要求显式选择 dmabuf 或 peermem,并校验 CUDA 属性与内核模块
- 在启动前保存脱敏环境快照,防止注册策略证据丢失或被覆盖
- 归档双节点单变量诊断,纠正默认路径与证据边界表述
- 补充注册映射、失败前置检查和 provenance 回归测试

影响范围:Issue 5 的 RDMA requester 编排、预检、证据与文档;TCP 路径保持不变。

Refs Tencent#5
记录受控 DMA-BUF 实验基线与 fail-fast 验证器的独立提交边界,并为双节点能力、失败日志和验证器 transcript 生成 SHA-256 清单。

验证确认:2026-07-31 与 2026-08-01 两批 manifest 均通过完整性校验。

Refs Tencent#5
@yanchaomei

Copy link
Copy Markdown
Author

2026-08-01 根因诊断与 fail-closed 修复已推送(7a45d28161ed4d):

  • 纠正 Mooncake v0.3.12 默认路径:发布源码实际为 WITH_NVIDIA_PEERMEM=true,默认进入 legacy peer-memory / ibv_reg_mr,不是 DMA-BUF。
  • requester node1 三张 A40:CUDA attr 116=1、attr 124=0;nvidia-peermem 模块文件与 driver 版本匹配但未加载。原始默认路径因此出现 Bad address [14] / AddressNotRegistered
  • 同环境只增加 WITH_NVIDIA_PEERMEM=0 后,旧错误消失,但 Mooncake 明确报告 GPU 不支持 DMA-BUF,和 attr 124=0 一致。
  • 新编排要求显式选择 ISSUE5_RDMA_GPU_REGISTRATION=dmabuf|peermem,并在 vLLM 启动前校验全部所选 GPU 的 CUDA 能力与模块状态;不满足即 fail closed。
  • 每个 role/protocol 都保存脱敏环境快照,记录最终 GPU 集合、注册策略与派生的 WITH_NVIDIA_PEERMEM,并在写证据前检查同名 PID slot,避免错误归因。
  • node3 attr 116/124=1/1 只记作 DMA-BUF capability preflight 通过;没有运行 node3 Mooncake E2E,没有升级证据等级。

验证:make check 通过,46 tests passed;Ruff lint/format、全部 Shell 语法、diff check 通过;remote-20260731remote-20260801 两批 SHA-256 manifest 均通过;独立审查 Critical/Important/Minor 均为 0。

证据:RESULTS.md · 2026-08-01 root-cause bundle

边界不变:当前仍是 UNPROVEN_RDMA,正式 Qwen 7B 矩阵仍为 UNKNOWN。下一步需要共享 requester 管理员明确授权加载 nvidia-peermem(或迁移到 attr 124=1 的 requester)后,才运行最小 RDMA Writer/Reader Gate。

在用户授权后,加载与 node1 驱动匹配的 nvidia_peermem,并使用空闲 GPU 0 完成单请求 Writer/Reader/recompute 闭环。

归档 PUT/GET 指标、输出摘要、RDMA 计数器、注册日志、清场状态与 SHA-256 manifest;报告将该结果严格限定为 Pythia 14M 兼容性证据,Qwen 7B 正式矩阵仍为 UNKNOWN。

验证:make check(46 passed);三份 manifest 通过;远端命中判定重算为 proven=true。

Relates Tencent#5
@yanchaomei

Copy link
Copy Markdown
Author

管理员授权后的最小 peermem GPUDirect RDMA Gate 已完成并推送至 c5982c1

  • node1 加载与 kernel/driver 匹配的 nvidia_peermem 580.95.05,仅使用空闲 GPU 0;GPU 2 上其他用户进程未触碰。
  • Writer:63/63 PUT keys、3,096,576 bytes、0 failed keys。
  • fresh Reader:63/63 GET keys、3,096,576 bytes、0 failed keys、1008/1008 external hit tokens。
  • fresh recompute 对照:Reader 输出 SHA-256 1/1 一致;verify-remote-hit 重算为 proven=true
  • GPUDirect 证据:显式 peermem / WITH_NVIDIA_PEERMEM=1,8 GiB CUDA-backed KV arena 注册成功,实验时模块 use count=6,endpoint memcpy 与 Store host staging 均禁用;Writer RDMA 发送、Reader RDMA 接收增量分别为 3,278,016 / 3,274,992 bytes,无 owner 50052 TCP payload 连接。
  • 安全收尾:Requester 8010/8020、Store 50051/50052/8080/9003 均释放;GPU 0/1 回到 0 MiB。模块按授权保持已加载,收尾 use count=0,未擅自卸载。

证据级别仅升级为 GPUDIRECT_RDMA_COMPATIBILITY:这是 Pythia 14M、单请求、2048-token 功能 smoke,不是 Qwen 7B、长上下文、QPM、SLO 或 RDMA-over-TCP 性能结论;正式矩阵仍为 UNKNOWN

验证:make check 通过(46 tests);Ruff、Shell 语法、diff check 通过;三批 SHA-256 manifest 全部通过;远端命中判定从 raw 重算一致。

证据入口:RESULTS.md · peermem raw bundle · machine verdict

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant